<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>array去重</title>
</head>
<body>
    <!-- 数组去重 -->
    <script>
        var x = [1, 2, 3, 4, 5, 5, 2, 2, 3, 1, 2, 4];
        var y = [];

        // // 方法一,算法复杂度较高
        // for(var i = 0; i < x.length; i++) {
        //     for(var j = 0; j < y.length; j++) {
        //         if(x[i] == y[j]) {
        //             break;
        //         }
        //     }
        //     if(j >= y.length) {
        //         y.push(x[i]);
        //     }
        // }
        // console.log(x);
        // console.log(y);

        // // 方法二,算发中规中矩，可以使用
        // x.sort();
        // console.log(x);
        // for(var i = 0; i < x.length; i++) {
        //     if(y.length == 0 || y[y.length-1] !== x[i]) {
        //         y.push(x[i]);
        //     }
        // }
        // console.log(y);

        // // 方法三，出其不意，也推荐使用
        // var arrMap = [];
        // for(var i = 0; i < x.length; i++) {
        //     arrMap[x[i]] = true;
        // }
        // console.log(arrMap);
        // for(j in arrMap) {
        //     y.push(+j);
        // }
        // console.log(y);

        
        // 变形题
        // 值类型：number, string, booleam, null, NaN, undefined
        // 引用类型：array, function, object
        var array = [1, 2, 3, 2, 4, 5, 1, 2, NaN, 'NaN', 'null','undefined', 'null', 'a', 'b', 'c', 'a', 'c', 'd', true, false, true, false, true, null, undefined, [1], {}, function a() {}];
        var array2 = [];

        // // 方法一
        // for(var i = 0; i < array.length; i++) {
        //     for(var j = 0; j < array2.length; j++) {
        //         if(array[i] == array2[j]) {
        //             break;
        //         }
        //     }
        //     if(j >= array2.length) {
        //         array2.push(array[i]);
        //     }
        // }
        // console.log(array);
        // console.log(array2);

        // 方法二
        for(var i = 0; i < array.length; i++) {
            // console.log(array[i]);
            // console.log('typeof = ' + typeof array[i]);
            // var str = typeof array[i];
            // console.log('str = ' + typeof str);
            if(typeof array[i] == 'number') {
                console.log('number = ' + array[i]);
            }
            if(typeof array[i] == 'string') {
                console.log('string = ' + array[i]);
            }
            if(typeof array[i] == 'boolean') {
                console.log('boolean = ' + array[i]);
            }
            if(typeof array[i] == 'undefined') {
                console.log('undefined = ' + array[i]);
            }
            if(typeof array[i] == 'object') {
                console.log('object = ' + array[i]);
            }
            if(typeof array[i] == 'NaN') {
                console.log('NaN = ' + array[i]);
            }
            if(typeof array[i] == 'array') {
                console.log('array = ' + array[i]);
            }
            if(typeof array[i] == 'function') {
                console.log('function = ' + array[i]);
            }
        }
        console.log('--------------------------------');

        // 方法三
        array.sort();
        console.log(array);

    </script>
</body>
</html>